---
layout: default
---

{% comment %}
<div class="home">

  <h1 class="page-heading">Posts</h1>

  {{ content }}

  <ul class="post-list">
    {% for post in site.posts %}
    <li>
      {% assign date_format = site.minima.date_format | default: "%b %-d, %Y" %}
      <span class="post-meta">{{ post.date | date: date_format }}</span>

      <h2>
        <a class="post-link" href="{{ post.url | relative_url }}">{{ post.title | escape }}</a>
      </h2>
    </li>
    {% endfor %}
  </ul>

  <p class="rss-subscribe">subscribe <a href="{{ " /feed.xml " | relative_url }}">via RSS</a></p>

</div>
{% endcomment %}




<!--
888
888
888
888  .d88b.   .d88b.   .d88b.
888 d88""88b d88P"88b d88""88b
888 888  888 888  888 888  888
888 Y88..88P Y88b 888 Y88..88P
888  "Y88P"   "Y88888  "Y88P"
                  888
             Y8b d88P
              "Y88P"
-->

<div class="row mb-5">
  <div class="col-md-4 my-auto">
    <a name="home"><img src="https://github.com/kubicorn/kubicorn/raw/master/docs/img/kubicorn-trans.png" width="100%"></a>
  </div>
  <div class="col">

    <!-- <h1 class="display-1">kubicorn</h1> -->

    <h1 class="mb-3">Create, manage, snapshot, and scale Kubernetes infrastructure in the public cloud.</h1>

    <p><code>kubicorn</code> is an <strong>unofficial</strong> project that solves the Kubernetes infrastructure problem and
      gives users a rich golang library to work with infrastructure.</p>

    <p><code>kubicorn</code> is a project that helps a user manage cloud infrastructure for Kubernetes. With <code>kubicorn</code>      a user can create new clusters, modify and scale them, and take a snapshot of their cluster at any time.</p>

    <p><strong>NOTE:</strong> This is a work-in-progress, we do not consider it production ready. We're working hard towards the <code>v1.0.0</code> release and we're expecting it in the upcoming months.
      Use at your own risk and if you're as excited about it as we are, maybe you want to join us on the <code>#kubicorn</code> channel in the <a href="http://slack.k8s.io/">Kubernetes Slack community.</a></p>

    <p><strong>Project update:</strong> <code>kubicorn</code> is currently going through a breaking API changes as we adopt the upstream <a href="https://github.com/kubernetes-sigs/cluster-api">cluster API</a>. We have moved <code>kubicorn</code> to <code>github.com/kubicorn/kubicorn</code>. We are targeting a stable release shortly! 

    <p>Previously, we mainly used a channel in the <a href="https://invite.slack.golangbridge.org/">Gophers Slack community</a>, which is still active, but we're moving to the Kubernetes Slack.
      You can also get involved and send your questions to our <a href="https://groups.google.com/forum/#!forum/kubicorn-users-and-developers">public mailing list</a>.</p>
    
    <p>We hold developer calls biweekly on Tuesdays, 1pm Pacific Time. By joining the <a href="https://groups.google.com/forum/#!forum/kubicorn-users-and-developers">mailing list</a>, you'll get a calendar invite.</p>
  </div>
</div>

<!--
                                                        888
                                                        888
                                                        888
 .d8888b .d88b.  888d888 .d88b.       888  888  8888b.  888 888  888  .d88b.  .d8888b
d88P"   d88""88b 888P"  d8P  Y8b      888  888     "88b 888 888  888 d8P  Y8b 88K
888     888  888 888    88888888      Y88  88P .d888888 888 888  888 88888888 "Y8888b.
Y88b.   Y88..88P 888    Y8b.           Y8bd8P  888  888 888 Y88b 888 Y8b.          X88
 "Y8888P "Y88P"  888     "Y8888         Y88P   "Y888888 888  "Y88888  "Y8888   88888P'
-->
<div class="light-bg py-3 px-5 mb-5">
  <a name="core" class="anchor">
    <h1 class="mb-3 mt-3 text-center">Core Values</h1>
  </a>

  <div class="row mb-5">
    <div class="font-awesome col-md-3 col-lg-2 my-3">
      <div class="balls d-flex mx-auto fabulous-red ">
        <div class="mx-auto my-auto align-self-center">
          <i aria-hidden="true" class="fa fa-users text-center"></i></span>
        </div>
      </div>
    </div>

    <div class="col d-flex my-auto flex-column mx-3">
      <h3>Community first.</h3>

      <p class="mb-0">This is a community driven project. We love you, and respect you. We are here to help you learn, help you grow, and
        help you succeed. If you have an idea, please share it.</h3>
    </div>
  </div>

  <div class="row mb-5">

    <div class="font-awesome col-md-3 my-3 hidden-md-up">
      <div class="balls d-flex mx-auto fabulous-orange">
        <div class="mx-auto my-auto align-self-center">
          <i aria-hidden="true" class="fa fa-child text-center"></i></span>
        </div>
      </div>
    </div>

    <div class="col d-flex my-auto flex-column mx-3">
      <h3>Developer empathy.</h3>

      <p class="mb-0">We are all software engineers, and we all work in many different code bases. We want the code to be stable, and approachable.
        We strive for clean and simple software, and we encourage refactoring and fixing technical debt.</p>
    </div>

    <div class="font-awesome col-md-3 my-3 hidden-sm-down">
      <div class="balls d-flex mx-auto fabulous-orange">
        <div class="mx-auto my-auto align-self-center">
          <i aria-hidden="true" class="fa fa-child text-center"></i></span>
        </div>
      </div>
    </div>
  </div>

  <div class="row mb-5">

    <div class="font-awesome col-md-3 my-3">
      <div class="balls d-flex mx-auto fabulous-lime">
        <div class="mx-auto my-auto align-self-center">
          <i aria-hidden="true" class="fa fa-cogs text-center"></i></span>
        </div>
      </div>
    </div>

    <div class="col d-flex my-auto flex-column mx-3">
      <h3>Operational empathy.</h3>

      <p class="mb-0">We want our tool to work, and work well. If an operator is running <code>kubicorn</code> it should feel comfortable and make sense
        to them. We want operators to feel empowered.</p>
    </div>
  </div>

  <div class="row mb-5">

    <div class="font-awesome col-md-3 my-3 hidden-md-up">
      <div class="balls d-flex mx-auto fabulous-orange">
        <div class="mx-auto my-auto align-self-center">
          <i aria-hidden="true" class="fa fa-server text-center"></i></span>
        </div>
      </div>
    </div>

    <div class="col d-flex my-auto flex-column mx-3">
      <h3>Infrastructure as software.</h3>

      <p class="mb-0">We believe that the oh-so important layer of infrastructure should be represented as software (not as code!). We hope
        that our project demonstrates this idea, so the community can begin thinking in the way of the new paradigm.</p>
    </div>

    <div class="font-awesome col-md-3 my-3 hidden-sm-down">
      <div class="balls d-flex mx-auto fabulous-green">
        <div class="mx-auto my-auto align-self-center">
          <i aria-hidden="true" class="fa fa-server text-center"></i></span>
        </div>
      </div>
    </div>
  </div>

  <div class="row mb-5">
    <div class="font-awesome col-md-3 my-3">
      <div class="balls d-flex mx-auto fabulous-purple">
        <div class="mx-auto my-auto align-self-center">
          <i aria-hidden="true" class="fa fa-cloud text-center"></i></span>
        </div>
      </div>
    </div>

    <div class="col d-flex my-auto flex-column mx-3">
      <h3>Rainbows and Unicorns</h3>

      <p class="mb-0">We believe that sharing is important, and encouraging our peers is even more important. Part of contributing to <code>kubicorn</code>
        means respecting, encouraging, and welcoming others to the project.</p>
    </div>
  </div>
</div>
<!--
                                                    888
                                                    888
                                                    888
 .d8888b .d88b.  88888b.   .d8888b .d88b.  88888b.  888888 .d8888b
d88P"   d88""88b 888 "88b d88P"   d8P  Y8b 888 "88b 888    88K
888     888  888 888  888 888     88888888 888  888 888    "Y8888b.
Y88b.   Y88..88P 888  888 Y88b.   Y8b.     888 d88P Y88b.       X88
 "Y8888P "Y88P"  888  888  "Y8888P "Y8888  88888P"   "Y888  88888P'
                                           888
                                           888
                                           888
-->

<div class="">

  <a name="concepts" class="anchor">
    <h1 class="my-5 text-center">Concepts</h1>
  </a>

  <div class="row">
    <div class="col">
      <h3 class="text-center">Create</h3>
      <p><code>kubicorn</code> lets a user create a Kubernetes cluster in a cloud of their choice.</p>
    </div>
    <div class="col">
      <h3 class="text-center">Apply</h3>
      <p>Define what you want, then apply it. That simple.</p>
    </div>
  </div>

  <div class="row">
    <div class="col">
      <h3 class="text-center">Adopt</h3>
      <p><code>kubicorn</code> can adopt any Kubernetes cluster at any time.</p>
    </div>
    <div class="col">
      <h3 class="text-center">Scale</h3>
      <p><code>kubicorn</code> is powered by a state enforcement pattern. A user defines the intended state of Kubernetes infrastructure,
        and <code>kubicorn</code> can enforce the intended state.</p>
    </div>
  </div>

  <div class="row mb-5">
    <div class="col">
      <h3 class="text-center">Snapshot</h3>
      <p><code>kubicorn</code> allows a user to take a snapshot of a Kubernetes cluster, and run the image in any cloud at any
        time. A snapshot is compressed file that will represent intended infrastructure <strong>and</strong> intended application
        definitions. Take a snap, save a snap, deploy a snap.</p>
    </div>
    <div class="col">
      <h3 class="text-center">Enforce</h3>
      <p><code>kubicorn</code> is built as a library and a framework. Thus allowing it to be easily vendored into operator and
        controller patterns to enforce intended state of infrastructure.</p>
    </div>
  </div>

</div>


<div class="mb-5 text-center">
  <div class="" style="margin: 0 auto;"></div>
  <!-- <a name="installing" class="anchor">
    <h1 class="mb-3 mt-3 text-center">Installing</h1>
  </a> -->

  <script  type="text/javascript" src="https://asciinema.org/a/7JKtK7RSNSjznOYpX1rOprRRq.js" id="asciicast-7JKtK7RSNSjznOYpX1rOprRRq" async></script><br>

  </div>
</div>

<!--
     888 d8b  .d888  .d888                                  888
     888 Y8P d88P"  d88P"                                   888
     888     888    888                                     888
 .d88888 888 888888 888888 .d88b.  888d888 .d88b.  88888b.  888888
d88" 888 888 888    888   d8P  Y8b 888P"  d8P  Y8b 888 "88b 888
888  888 888 888    888   88888888 888    88888888 888  888 888
Y88b 888 888 888    888   Y8b.     888    Y8b.     888  888 Y88b.
 "Y88888 888 888    888    "Y8888  888     "Y8888  888  888  "Y888
-->
<div class="pb-3 different light-bg pb-5 px-5 mb-5">
  <a name="different" class="anchor">
    <h1 class="mb-5 pt-5 text-center">How is <code>Kubicorn</code> different?</h1>
  </a>

  <ol class="mb-0">
    <li>We use <code>kubeadm</code> to bootstrap our clusters.</li>
    <li>We strive for developer empathy, and clean and simple code.</li>
    <li>We strive for operational empathy, and clean and simple user experience.</li>
    <li>We start with <code>struct</code> literals for profiles, and then marshal into an object.</li>
    <li>We offer the tooling as a library, more than a command line tool.</li>
    <li>We are atomic, and will un-do any work if there is an error.</li>
    <li>We run on many operating systems.</li>
    <li>We allow users to define their own arbitrary bootstrap logic.</li>
    <li>We have no guarantee that anything works, ever, use at your own risk.</li>
    <li>We have no dependency on DNS.</li>
    <li>We believe in snapshots, and that a user should be able to capture a cluster, and move it.</li>
  </ol>
</div>

<!--
 .d888         d8b                        888
d88P"          Y8P                        888
888                                       888
888888 888d888 888  .d88b.  88888b.   .d88888 .d8888b
888    888P"   888 d8P  Y8b 888 "88b d88" 888 88K
888    888     888 88888888 888  888 888  888 "Y8888b.
888    888     888 Y8b.     888  888 Y88b 888      X88
888    888     888  "Y8888  888  888  "Y88888  88888P'
-->
<a name="friends" class="anchor">
  <h1 class="my-5 text-center">Friends of <code>kubicorn</code></h1>
</a>
<div id="accordion" role="tablist" aria-multiselectable="true">

  {% assign friends = site.friends | sort: 'title' %}
  {% for friend in friends %}
    {% assign filename = friend.path | split: '/' %}
    {% assign filename2 = filename.last | split: '.' %}
    {% assign filename3 = filename2.first %}
  <div class="card">
    <div class="card-header" role="tab" id="heading{{ filename3 }}">
      <h5 class="mb-0">
        <a data-toggle="collapse" data-parent="#accordion" href="#collapse{{ filename3 }}" aria-expanded="true" aria-controls="collapse{{ filename3 }}">
          {{ friend.title }}
        </a>
      </h5>
    </div>
    <div id="collapse{{ filename3 }}" class="collapse {% if forloop.index == 1 %}{{ "show" }}{% endif %}" role="tabpanel" aria-labelledby="heading{{ filename3 }}">
      <div class="card-block">
        <div class="row">
          <div class="col-4 col-lg-2">
            <img src="{{ friend.logo | relative_url }}" class="img-fluid" alt="{{ friend.title }}">
          </div>
          <div class="col align-self-center">
              <h5>{{ friend.title }}</h5>
              {{ friend.content }}
          </div>
        </div>
      </div>
    </div>
  </div>
  {% endfor %}

<!--
     888                   .d8888b.
     888                  d88P  Y88b
     888                  Y88b. d88P
 .d88888  .d88b.   .d8888b "Y88888"   .d88b.  88888b.
d88" 888 d88""88b d88P"   .d8P""Y8b. d88""88b 888 "88b
888  888 888  888 888     888    888 888  888 888  888
Y88b 888 Y88..88P Y88b.   Y88b  d88P Y88..88P 888  888
 "Y88888  "Y88P"   "Y8888P "Y8888P"   "Y88P"  888  888
-->
<div class="mb-5 mx-5">

  <h1 class="my-5 text-center">Documentation</h1>

  {% assign docs = site.documentation | sort: 'title' %}

  <div class="row sidebar mb-2 mt-4">
    <div class="col col-sm-3">
      <p class="mb-3"><strong>General</strong></p>
    </div>
    <div class="col">
      {% for cookie in docs %} {% if cookie.doctype == "general" %}
      <a href="{{ cookie.url | relative_url }}">
        <p class="mb-2">{{ cookie.title }}</p>
      </a>
      {% endif %} {% endfor %}
    </div>
  </div>

  <div class="row sidebar mb-2 mt-4">
      <div class="col col-sm-3">
        <p class="mb-3"><strong>AWS</strong></p>
      </div>
      <div class="col">
        {% for cookie in docs %} {% if cookie.doctype == "aws" %}
        <a href="{{ cookie.url | relative_url }}">
          <p class="mb-2">{{ cookie.title }}</p>
        </a>
        {% endif %} {% endfor %}
      </div>
    </div>

    <div class="row sidebar mb-2 mt-4">
        <div class="col col-sm-3">
          <p class="mb-3"><strong>Azure</strong></p>
        </div>
        <div class="col">
          {% for cookie in docs %} {% if cookie.doctype == "azure" %}
          <a href="{{ cookie.url | relative_url }}">
            <p class="mb-2">{{ cookie.title }}</p>
          </a>
          {% endif %} {% endfor %}
        </div>
      </div>

      <div class="row sidebar mb-2 mt-4">
          <div class="col col-sm-3">
            <p class="mb-3"><strong>Digital Ocean</strong></p>
          </div>
          <div class="col">
            {% for cookie in docs %} {% if cookie.doctype == "do" %}
            <a href="{{ cookie.url | relative_url }}">
              <p class="mb-2">{{ cookie.title }}</p>
            </a>
            {% endif %} {% endfor %}
          </div>
        </div>

        <div class="row sidebar mb-2 mt-4">
            <div class="col col-sm-3">
              <p class="mb-3"><strong>Google</strong></p>
            </div>
            <div class="col">
              {% for cookie in docs %} {% if cookie.doctype == "google" %}
              <a href="{{ cookie.url | relative_url }}">
                <p class="mb-2">{{ cookie.title }}</p>
              </a>
              {% endif %} {% endfor %}
            </div>
          </div>

        <div class="row sidebar mb-2 mt-4">
            <div class="col col-sm-3">
                <p class="mb-3"><strong>OVH</strong></p>
            </div>
            <div class="col">
                {% for cookie in docs %} {% if cookie.doctype == "ovh" %}
                <a href="{{ cookie.url | relative_url }}">
                    <p class="mb-2">{{ cookie.title }}</p>
                </a>
                {% endif %} {% endfor %}
            </div>
        </div>


      <div class="row sidebar mb-2 mt-4">
          <div class="col col-sm-3">
            <p class="mb-3"><strong>Packet</strong></p>
          </div>
          <div class="col">
            {% for cookie in docs %} {% if cookie.doctype == "packet" %}
            <a href="{{ cookie.url | relative_url }}">
              <p class="mb-2">{{ cookie.title }}</p>
            </a>
            {% endif %} {% endfor %}
          </div>
        </div>

  <!--
    <dl class="row">
      <dt class="col-sm-4">
        <p><span class="lead"><a href="docs/INSTALL.md">Install</a></span>
      </dt>
      <dd class="col-sm-8">
        <span class="text-muted"><span class="text-muted">Install guide for Kubicorn CLI</span></p>
      </dd>
      <dt class="col-sm-4">
        <p><span class="lead"><a href="docs/envar.md">Environmental Variables</a></span>
      </dt>
      <dd class="col-sm-8">
        <span class="text-muted">Master list of supported environmental variables</span></p>
      </dd>
      <dt class="col-sm-4">
        <p><span class="lead"><a href="https://nivenly.com/kubicorn">Kops vs Kubicorn</a></span>
      </dt>
      <dd class="col-sm-8">
        <span class="text-muted">Blog about kubicorn with comparison table</span></p>
      </dd>
      <dt class="col-sm-4">
        <p><span class="lead"><a href="docs/aws/walkthrough.md">AWS Walkthrough</a></span>
      </dt>
      <dd class="col-sm-8">
        <span class="text-muted">A walkthrough guide on install Kubernetes 1.7 in AWS</span></p>
      </dd>
      <dt class="col-sm-4">
        <p><span class="lead"><a href="docs/do/walkthrough.md">DigitalOcean Walkthrough</a></span>
      </dt>
      <dd class="col-sm-8">
        <span class="text-muted">A walkthrough guide on install Kubernetes 1.7 in D.O.</span></p>
      </dd>
      <dt class="col-sm-4">
        <p><span class="lead"><a href="docs/google/walkthrough.md">Google Cloud engine  Walkthrough</a></span>
      </dt>
      <dd class="col-sm-8">
        <span class="text-muted">A walkthrough guide on install Kubernetes 1.7 in GCE</span></p>
      </dd>
      <dt class="col-sm-4">
        <p><span class="lead"><a href="https://www.useloom.com/share/a0afd5034e654b0b8d6785a5fa8ec754">AWS Video</a></span>
      </dt>
      <dd class="col-sm-8">
        <span class="text-muted">A step by step video of using Kubicorn in AWS</a></span>
      </dd>
      <dt class="col-sm-4">
        <p><span class="lead"><a href="https://youtu.be/2DmUG0RgS70?list=PLaR6Rq6Z4IqfwXtKT7KeARRvxdvyLqG72">Tech N Talk Deep Dive</a></span>
      </dt>
      <dd class="col-sm-8">
        <span class="text-muted"> A technical deep dive courtesy of RedHat</span></p>
      </dd>
    </dl>
-->
</div>
<!--
d8b                   888             888 888 d8b
Y8P                   888             888 888 Y8P
                      888             888 888
888 88888b.  .d8888b  888888  8888b.  888 888 888 88888b.   .d88b.
888 888 "88b 88K      888        "88b 888 888 888 888 "88b d88P"88b
888 888  888 "Y8888b. 888    .d888888 888 888 888 888  888 888  888
888 888  888      X88 Y88b.  888  888 888 888 888 888  888 Y88b 888
888 888  888  88888P'  "Y888 "Y888888 888 888 888 888  888  "Y88888
                                                                888
                                                           Y8b d88P
                                                            "Y88P"
-->
<div class="mb-5">
  <a name="installing" class="anchor">
    <h1 class="mb-3 mt-3 text-center">Installing</h1>
  </a>

  <p><code>$ go get github.com/kubicorn/kubicorn</code></p>

  <p>..or read the <a href="documentation/install.html">Install Guide</a>.</p>
</div>
